package com.atguigu.day13.teacher.init.i1;

import org.junit.Test;

/*
类初始化: 是类加载的一个步骤
      作用: 给类中的静态成员变量显示赋值
      过程: 给类中的静态成员变量显示赋值过程
         <clinit>
          A. 静态代码块
          B. 静态成员变量显示赋值语句
          谁先写谁先执行
      注意:
         1.类初始化只会执行一次
         2.导致类初始化的操作:
            2.1使用了类中的静态资源
            2.2创建对象
         3.如果存在继承关系会先进行父类初始化再进行子类初始化
           父子类共用一个<clinit>
         4.如果子类使用了从父类继承的静态资源只会导致父类初始化 不会导致子类初始化
实例初始化:
     作用:给类中普通成员变量进行显示赋值
     过程:类中普通成员变量显示赋值过程
        <init>
            ①构造器内的super
            ②普通成员变量显示赋值语句
            ③普通代码块内容
            ④构造器内容
            ①  (②③)(看书写顺序)  ④
      注意:
        1.创建对象就会触发实例初始化
        2.每创建一次对象就会执行一次实例初始化


 */
public class InitTest {
    @Test
    public void test01(){
      new Person();// 4 2 1 3  5
                  // 2 1 3 5 4
        System.out.println("------------");
        new Student();

    }

}
